-- 校验短信验证码
local prefix = 'captcha:sms:'..KEYS[1]..':'
local code = ARGV[1]
local key_code = prefix..'code'
local key_error_count = prefix..'error_count'
local max_error_count = tonumber(ARGV[2])

-- 判断验证码是否存在（直接读取）
local rightCode = redis.call('get', key_code)
if not rightCode then
    return 1
end

-- 判断错误次数
local error_count = tonumber(redis.call('get', key_error_count))
if error_count >= max_error_count then
    return 2
end

-- 判断验证码是否正确
if not(code == rightCode) then
    -- 错误次数+1
    redis.call('incr', key_error_count)
    return 3
end

-- 验证码正确，删除验证码
redis.call('del', key_code)
redis.call('del', key_error_count)
return 0






